3.1. Ozone Manager
Компоненты Apache Ozone: Ozone Manager (OM)
Ozone Manager (OM) — это один из ключевых компонентов Apache Ozone, отвечающий за управление метаданными и пространствами имён (volumes, buckets, keys). OM играет центральную роль в системе, принимая запросы от клиентов и обеспечивая координацию работы с данными. В этом разделе рассматриваются функции, архитектура и задачи Ozone Manager.
1. Роль Ozone Manager в Apache Ozone
Ozone Manager управляет всеми операциями, связанными с:
- Volumes (Томами): Создание, удаление и управление доступом.
- Buckets (Бакетами): Создание бакетов и настройка политик (репликация, квоты, версионирование).
- Keys (Ключами/Объектами): Регистрация ключей и управление их метаданными.
OM не хранит сами данные, а управляет метаданными о том, где и как хранятся объекты. Он взаимодействует с Storage Container Manager (SCM) для получения информации о контейнерах и блоках данных.
2. Основные функции Ozone Manager
-
Управление пространством имён:
- Создание и удаление volumes и buckets.
- Назначение владельцев и квот для томов.
- Управление политиками хранения.
-
Обработка запросов клиентов:
- OM принимает запросы от клиентов на операции с метаданными (создание томов, бакетов и ключей).
- Работает в связке с SCM для выделения контейнеров для хранения блоков данных.
-
Обеспечение консистентности данных:
- OM использует протокол Raft (реализованный через Apache Ratis) для согласованности и надёжн ости данных.
- Все изменения в метаданных записываются в журналы транзакций.
-
Отказоустойчивость и репликация:
- OM может быть запущен в режиме кластеризации, при котором несколько экземпляров OM работают вместе для обеспечения высокой доступности.
3. Архитектура Ozone Manager
-
OM Leader-Follower:
В кластере OM один экземпляр работает как лидер, а остальные — как фолловеры. Лидер обрабатывает все запросы на запись, а фолловеры синхронизируют свои данные. -
Raft-протокол:
Для поддержания согласованности метаданных OM использует Raft, обеспечивая линейную консистентность и устойчивость к сбоям. -
Журнал операций (Transaction Log):
OM ведёт журнал всех операций с метаданными. В случае сбоя узла эти журналы используются для восстановления состояния.
4. Настройка и управление Ozone Manager
Запуск Ozone Manager
OM можно запустить с помощью следующей команды:
bin/ozone om --daemon start
Остановк а Ozone Manager
bin/ozone om --daemon stop
Проверка статуса Ozone Manager
bin/ozone admin service list
5. Конфигурация Ozone Manager
Основные параметры Ozone Manager задаются в файле ozone-site.xml
.
Пример настроек:
<configuration>
<property>
<name>ozone.om.address</name>
<value>om1.example.com:9878</value>
</property>
<property>
<name>ozone.om.nodes</name>
<value>om1,om2,om3</value>
</property>
<property>
<name>ozone.om.ratis.port</name>
<value>19200</value>
</property>
<property>
<name>ozone.om.snapshot.interval</name>
<value>10min</value>
</property>
</configuration>
ozone.om.address
: Указывает IP-адрес и порт OM.ozone.om.nodes
: Перечисляет все узлы OM в кластере.ozone.om.ratis.port
: Порт для протокола Raft.ozone.om.snapshot.interval
: Интервал создания снимков метаданных.
6. Резервное копирование и восстановление метаданных OM
OM автоматически создаёт снимки метаданных (snapshots), которые можно использовать для восстановления в случае сбоя.
Создание снимка вручную
bin/ozone admin om snapshot create
Восстановление из снимка
bin/ozone admin om snapshot restore --snapshot=<snapshot-path>
7. Мониторинг и логирование OM
Логи Ozone Manager можно найти в директории /var/log/ozone/
.
Просмотр логов в реальном времени:
tail -f /var/log/ozone/om.log
Мониторинг состояния узла OM:
Используйте команду для проверки активных служб:
bin/ozone admin service list
8. Отказоустойчивость и кластеризация Ozone Manager
OM поддерживает кластерный режим для обеспечения высокой доступности. Несколько экземпляров OM работают как кластер, обеспечивая доступность данных даже при сбоях отдельных узлов.
Пример настройки нескольких узлов OM:
В файле ozone-site.xml
укажите список узлов OM:
<property>
<name>ozone.om.nodes</name>
<value>om1,om2,om3</value>
</property>
<property>
<name>ozone.om.address.om1</name>
<value>om1.example.com:9878</value>
</property>
<property>
<name>ozone.om.address.om2</name>
<value>om2.example.com:9878</value>
</property>
<property>
<name>ozone.om.address.om3</name>
<value>om3.example.com:9878</value>
</property>
После настройки запустите каждый экземпляр OM на своём узле:
bin/ozone om --daemon start